Method to reduce delay variation by sensitivity cancellation

ABSTRACT

A method receives an initial circuit design. The circuit design includes at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between the source and the sink. The method evaluates timing performance parameter sensitivities to manufacturing variations of each of the elements to identify how much each element will increase or decrease the timing performance parameter of the path for each change in each manufacturing variable associated with manufacturing the elements. Further, the method alters the elements within the path until elements that produce positive changes to the timing performance parameter for a given manufacturing variable change approximately equals (in magnitude) elements that produce negative changes to the timing performance parameter for the given manufacturing variable change, to produce an altered circuit design.

BACKGROUND

The present invention relates to integrated circuit design methodologies, and more specifically, to a methodology that evaluates timing performance parameter sensitivities to manufacturing variations of each of the elements within a path to identify how much each element will increase or decrease the timing performance parameter of the path for each change in each manufacturing variable associated with manufacturing the elements.

Manufacturing process variation is increasing as geometries reduce in size. Statistical Static Timing Analysis can model variations and account for it in timing tests. Reducing variation through early design changes can improve design robustness.

SUMMARY

According to one embodiment of the present invention, a method is provided that receives an initial circuit design into a computerized device. The circuit design includes at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between the source and the sink. The method evaluates timing performance parameter sensitivities to manufacturing variations of each of the elements to identify how much each element will increase or decrease the timing performance parameter of the path for each change in each manufacturing variable associated with manufacturing the elements, again using the computerized device. Further, the method alters the elements within the path until elements that produce positive changes to the timing performance parameter for a given manufacturing variable change approximately equals (in magnitude) elements that produce negative changes to the timing performance parameter for the given manufacturing variable change, to produce an altered circuit design using the computerized device.

According to another embodiment of the present invention, a method is provided that receives an initial circuit design into a computerized device. The circuit design includes at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between the source and the sink. The method evaluates resistance and capacitance sensitivities to manufacturing variations of each of the elements to identify how much each element will increase or decrease the resistance and capacitance of the path for each change in each manufacturing variable associated with manufacturing the elements, again using the computerized device. Further, the method alters the elements within the path until elements that produce positive changes to the resistance and capacitance for a given manufacturing variable change approximately equals (in magnitude) elements that produce negative changes to the resistance and capacitance for the given manufacturing variable change, to produce an altered circuit design using the computerized device.

According to a further embodiment of the present invention, a method is provided that receives an initial circuit design into a computerized device. The circuit design includes at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between the source and the sink. The method evaluates temperature based timing characteristics sensitivities to manufacturing variations of each of the elements to identify how much each element will increase or decrease the temperature based timing characteristics of the path for each change in each manufacturing variable associated with manufacturing the elements, again using the computerized device. Further, the method alters the elements within the path until elements that produce positive changes to the temperature based timing characteristics for a given manufacturing variable change approximately equals (in magnitude) elements that produce negative changes to the temperature based timing characteristics for the given manufacturing variable change, to produce an altered circuit design using the computerized device.

According to an additional embodiment of the present invention, a computer program product comprising a computer readable storage medium having computer readable program code embodied therewith is configured to perform a method that receives an initial circuit design. The circuit design includes at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between the source and the sink. The method evaluates timing performance parameter sensitivities to manufacturing variations of each of the elements to identify how much each element will increase or decrease the timing performance parameter of the path for each change in each manufacturing variable associated with manufacturing the elements. Further, the method alters the elements within the path until elements that produce positive changes to the timing performance parameter for a given manufacturing variable change approximately equals (in magnitude) elements that produce negative changes to the timing performance parameter for the given manufacturing variable change, to produce an altered circuit design.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a schematic diagram of a circuit that includes a source, multiple sinks, and multiple paths between the source and sinks;

FIG. 2 is a graph illustrating changes in delay relative to operating temperature;

FIG. 3 is a graph illustrating changes in delay relative to operating temperature;

FIG. 4 is a graph illustrating changes in timing delay and temperature relative to slew;

FIG. 5 is a flowchart illustrating embodiments herein;

FIG. 6 is a schematic diagram of a system utilized by embodiments herein;

FIG. 7 is a flow diagram of methods for deployment;

FIG. 8 is a flow diagram of methods for integration;

FIG. 9 is a flow diagram of methods for on-demand implementation; and

FIG. 10 is a flow diagram of methods for VPN Service.

DETAILED DESCRIPTION

The embodiments herein identify blocks/design elements for which sensitivities to the same source of variations are in the opposite direction, combine the blocks so that the path has minimal variation to this parameter, and optimize the design so that sensitivities to the source of variation cancel along a path for a timing test.

With the embodiments herein, each metal layer is processed independently, and resistance (R) and capacitance (C) of different layers are uncorrelated. Within each layer R and C are anti-correlated (depending on same geometry). An increased R means reduced C and R variation is larger the C variation. A single layer RC delay tolerance is tight and grows with smaller C load. Multi-layer RC has independently varying segments per layer giving huge RC tolerance.

Resistance at the source of a net dominates, and capacitance dominates at the sink of the net. Relative tolerances per segment can be added or totaled using residual sum of squares (RSS). Multiple net segments are on the same layer track and, with embodiments herein, are placed in a balanced manner in the net to reduce RC tolerance.

As shown in FIG. 1, a net 300 is built by conductive (e.g., metal) segments {i, i=101 . . . M}. A branch of this net stretches from source segment 301 to sink segment N. There are several sinks (Sink 1-Sink 3) on this net 300. The delay from the source through the various segments 301-310 to each sink is unique.

One example of a method that determines RC is Elmore RC delay calculation. With the Elmore RC delay calculation, a delay component of segment i is its resistance multiplied with the sum of all capacitances downstream from i to the sink and is represented in the following formulation:

${RC} = {\sum\limits_{i = 1}^{N}\; {R_{i}{\sum\limits_{j = i}^{N_{i}}C_{j}}}}$

-   -   for the sample RC to sink1:     -   # of resistive segments: N=6;     -   # of down stream caps per res segment:     -   N₁=10; N₂=10; N₃=10; N₄=10; N₅=8; N₆=6.

The Elmore delay from source to sink 1 is the sum of all delay components of the segments connecting sink 1 with the source.

With respect to RC tolerance, the following formulation can be used:

$\frac{\partial{RC}}{\partial q} = {{\frac{\partial R_{p}}{\partial q}{\sum\limits_{j = p}^{N_{p}}\; {Cj}}} + {\frac{\partial C_{p}}{\partial q}{\sum\limits_{i = 1}^{p}\; {{Ri}.}}}}$

This equation gives the sensitivity of a wire segment p on level q to a geometry variation of level q. For the total RC sensitivity to level q variation, all sensitivities of segments p have to be added. RC components not on level q do not vary with level q variations.

Where:

l_(i)=length of segment i on level q

${R_{i} = {\left( {R_{ib} + R_{iw}} \right)\frac{1}{2}}};{R_{i} \approx R_{inom}};{r_{q} = {R_{i}/l_{i}}}$ $\frac{\partial{Ri}}{\partial q} = {{\left( {R_{ib} - R_{iw}} \right)\frac{1}{6}} = {l_{i}*\frac{\partial r_{q}}{\partial q}}}$ ${C_{i} = {\left( {C_{ib} + C_{iw}} \right)\frac{1}{2}}};{C_{i} \approx C_{inom}};{c_{q} = {C_{i}/l_{i}}}$ $\frac{\partial{Ci}}{\partial q} = {{\left( {C_{ib} - C_{iw}} \right)\frac{1}{16}} = {l_{i}*\frac{\partial c_{q}}{\partial q}}}$ $\frac{\partial c_{q}}{\partial q} \leq {- {\frac{\partial r_{q}}{\partial q}.}}$

-   -   At the global routing, without set environment, for minimum wire         type,

$\frac{\partial c_{q}}{\partial q}\mspace{14mu} {and}\mspace{14mu} \frac{\partial r_{q}}{\partial q}$

have a fixed value per level.

This allows the calculation of sensitivity of RC to a single segment p on level q. Where segment p is the only segment on level q, the sensitivity to Rp*upstream cap+sensitivity to Cp*downstream resistance. The total RC tolerance is the statistical average of the RC sensitivities to each layer,

$\sqrt{\sum\limits_{q}\; \left( \frac{\partial{RC}}{\partial q} \right)^{2}}$

to minimize this number is the optimization challenge.

The global capacitance sensitivities are average numbers for an average wire environment. They scale with the length of the wire segment which is under control of the global router. As cap and resistance of the same level vary in opposite direction, the length of the segments on each layer and the choice of the layer for the segment placement can be optimized to minimize the total RC tolerance.

With respect to sensitivity of Rp and Cp to geometry variations of level q, the resistance sensitivity is asymmetric and the mean approximates the nom. This difference is small on chip level analysis. On a given level, the sensitivity scales with segment length. Further, the capacitance sensitivity is more symmetric. Resistance sensitivity is larger and in opposite direction from the capacitance sensitivity.

Router value function for several segments p on level q

$\frac{\partial{RC}}{\partial q} = {{\frac{\partial c_{q}}{\partial q}{\sum\limits_{p \in q}\; {l_{p}{\sum\limits_{i = 1}^{p}{Ri}}}}} + {\frac{\partial r_{q}}{\partial q}{\sum\limits_{p \in q}\; {l_{p}\; {\sum\limits_{j = p}^{N_{p}}{Cj}}}}}}$

These value functions per layer can be further combined to a total value function for all layers using the statistical averaging of the independent layer variation:

$\sqrt{\sum\limits_{q}\; \left( \frac{\partial{RC}}{\partial q} \right)^{2}}.$

Level dependent sensitivity of the resistance and capacitance is available from technology models out of the difference between process corners. The other parts of the RC sensitivity are nominal length dependent resistance and capacitance estimates out of the technology models and average layer density assumptions for the wire environment. All elements of the formula are available during global routing and their resulting value can be used as value function for routing optimization. During global routing, when the level distribution per routing grid is assigned, and segment length determined by the number of routing grids in the same direction, this sensitivity function can be minimized.

For this step the value function for the wire delay tolerance is calculated. Then, wire delay tolerance as function of the length of each segment can be calculated and minimized by changing the segment length. A reduction of the segment length on layer q will require a new segment on layer q at a different place of the net or on another layer. These optimization sets can be iterated until the value function is minimal considering the accuracy of the segment sensitivity and environment assumption. The optimization process should stop when the value function is smaller than a target percentage of the delay

Further, a limit should be set to the length of a segment. Too many small segments will increase the number of vias used and hurt resistance tolerance and can hurt manufacturability. The optimization process should therefore also include an average segment length target. As an example: when replacing a long rectangular route on two adjacent layers by a zigzag route with shorter wire segments on the same layers, the Total RC sensitivity can be reduced by almost an order of magnitude.

Thus, as shown above, circuits can balance circuits for resistance and capacitance changes in opposite direction to produce interconnect delay tolerance reduction. In another embodiment, temperature variations can be balanced. Increasing temperature can make some cells faster and some cells slower. On a given path these effects can be optimized to create a path delay with very small temperature sensitivity.

More specifically, with respect to temperature dependence and inversion, threshold voltage and carrier mobility decrease with increasing temperature. Further, a lower threshold voltage increases drain current and a lower mobility decreases the current. Thus, drain current is dependent on these two competing characteristics and can be represented by the following formulation:

${\sum\limits_{i}^{Path}\; {\frac{\partial{Delay}}{\partial{Temp}}{Block}_{i}}} \approx 0.$

This embodiment reduces temperature sensitivity by selecting and placing cells in a path. More specifically, this embodiment balances the threshold voltage cell type within each path considering load/slew to minimize temperature sensitivity. This is shown in FIGS. 2-4. FIG. 2 is a chart illustrating increasing delay for increasing operating temperature for low threshold voltage load cell types. FIG. 3 is a chart illustrating decreasing delay for increasing operating temperature for high threshold voltage load cell types. FIG. 4 shows how the slew, the shape of the output wave function varies with temperature. For two different cell types. Choosing the alternative cell type along a logic path allows one to cancel the temperature sensitivities and make the path delay relative independent of temperature changes

Therefore, the embodiments herein provide methods to reduce design sensitivity to process variation through tolerance cancellation such that delay components are identified in circuit and interconnect models, process sensitivity correlation is identified, and a delay function is created to minimize process variation using process sensitivities along a given path.

These processes are also shown in flowchart form in FIG. 5. More specifically, in item 500, the embodiments herein begin with an initial circuit design which can be received into a computerized device. The circuit design includes at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between the source and the sink. A similar type of circuit is illustrated in FIG. 1 and discussed above. Each of these elements comprises one or more physical integrated circuit devices such as transistors, capacitors, conductive wiring, etc.

In item 502, the embodiments herein evaluate timing performance parameter sensitivities to manufacturing variations of each of the elements using, for example, the methodologies discussed above, as well as other methodologies whether currently known or developed in the future. These timing performance parameters sensitivities can include resistance/capacitance, temperature based timing sensitivities, etc.

More specifically, the processing in item 502 identifies how much each element will increase or decrease the timing performance parameter of the path for each change in each manufacturing variable that is associated with manufacturing the elements. Again this can be done using the computerized device.

The manufacturing variations comprise differences that occur between different production runs and differences that occur within the same production run, using the same circuit design and the same manufacturing processes. Manufacturing variations can occur because of minor environmental or tooling differences between different production runs, minor environmental differences within different locations of various chamber-type tools, and the different processing which different locations of a wafer can receive. Manufacturing variables or variations can include conductor thickness, insulator thickness, doping concentration, feature size, etc.

In item 504, the elements can be combined into blocks and/or blocks of elements can be grouped so that the path has minimal variation to a given parameter. Every timing test is on a path basis. The embodiments herein check the slack, the difference between clock and data arrival at the latch which then stores the timed data. The sensitivity of the path slack to a process variation accumulates cell and net sensitivities along the path. During the optimization process, described here, the slack sensitivities should be minimal.

To optimize the path slack the embodiments herein check the contributions of the path sensitivities from the cell and wire segment sensitivities. Then the embodiments herein combine the elements whose sensitivities to a given parameter are in opposite directions (and cancel each other). The embodiments herein also combine the elements whose sensitivities can be made to go in opposite directions.

One additional aspect of step 504 is that a cell is often shared by many different paths. Changes in the cell therefore impact several slack tests. The selection of the cell for sensitivity optimization should therefore concentrate on the most critical paths, with the smallest timing margin.

This concern is also valid in a net optimization. A sensitivity optimization of a RC delay to a given sink point should be focused on the sink pin of the most critical paths.

Further, in item 506, the method optimizes the design so that sensitivities to the source of variation cancel along a path for a timing test by altering the elements within the path. More specifically, this process alters the elements until those elements that produce positive changes to the timing performance parameter for a given manufacturing variable change approximately equals (in magnitude) those elements that produce negative changes to the timing performance parameter for the given manufacturing variable change.

Therefore, with the process in item 506, every potential manufacturing variable is evaluated separately for each element (or block or group of elements). Thus, the embodiments herein determine whether the change in a single manufacturing variable will increase or decrease the timing delay of the element, increase or decrease the resistance or capacitances of the element, increase or decrease operating temperature of the element, etc. This process is then repeated for each different manufacturing variable.

This allows each of the elements (or block or group of the elements) to be characterized according to a specific manufacturing variable, such as oxide thickness. Therefore, elements that increase timing delay when oxide thickness increases, can be classified as “positive” elements, and elements that decrease resistance when oxide thickness increases can be classified as “negative” elements. For a given manufacturing variable (the increase of oxide thickness) the positive elements for resistance within a given path can be offset with negative elements.

Stated more broadly, elements that increase timing delay, resistance, capacitances, operating temperature, etc., can be classified as “positive” elements with respect to that specific manufacturing variable. Similarly, ones that decrease timing delay, resistance, capacitances, operating temperature, etc., can be classified as “negative” elements with respect to that specific manufacturing variable.

Therefore, for a given manufacturing variable, the positive elements for timing delay, resistance, capacitances, or operating temperature within the path can be offset with negative elements. This allows the embodiments herein to balance timing delay, balance resistance, balance capacitance, balance operating temperature, etc., for a specific manufacturing variable. In other words, the embodiments herein compensate for manufacturing variations that may be within acceptable tolerances by utilizing elements within the path that will react in opposite manners to the same manufacturing variation. Therefore, if the specific manufacturing variation does occur to a specific path, the complimentary elements within that path will react in opposite manners so that, as a whole, the path will not see significant variation in a performance parameter, such as timing delay.

This alteration of the initial circuit can include the removal and substitution of various elements within the path. In addition, the sensitivities to manufacturing variations can change depending upon the geometric positions of the elements relative to the source and the sink. For example, if an element is placed closer to the source, it may tend to be more sensitive toward increasing resistance for various manufacturing changes. To the contrary, if the same element is positioned closer to the sink, it may tend to be more sensitive toward increasing capacitances for the same manufacturing changes. Therefore, with embodiments herein, the alteration of the elements performed in item 506 can also include altering the positions of the elements relative to the source and the sink, by placing the elements on different layers, by zigzagging the wiring before it reaches the element, etc.

This process in item 506 produces an altered circuit design using the computerized device. The altered circuit design provides the same function as the initial circuit design. In item 508, the embodiments herein physically manufacture the altered circuit design using tools operatively connected to the computerized device to transform raw materials into physical circuits that can be embodied in wafers, chips, boards, etc.

As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or D-2 block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.

The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

A representative hardware environment for practicing the embodiments of the invention is depicted in FIG. 6. This schematic drawing illustrates a hardware configuration of an information handling/computer system in accordance with the embodiments of the invention. The system comprises at least one processor or central processing unit (CPU) 10. The CPUs 10 are interconnected via system bus 12 to various devices such as a random access memory (RAM) 14, read-only memory (ROM) 16, and an input/output (I/O) adapter 18. The I/O adapter 18 can connect to peripheral devices, such as disk units 11 and tape drives 13, or other program storage devices that are readable by the system. The system can read the inventive instructions on the program storage devices and follow these instructions to execute the methodology of the embodiments of the invention. The system further includes a user interface adapter 19 that connects a keyboard 15, mouse 17, speaker 24, microphone 22, and/or other user interface devices such as a touch screen device (not shown) to the bus 12 to gather user input. Additionally, a communication adapter 20 connects the bus 12 to a data processing network 25, and a display adapter 21 connects the bus 12 to a display device 23 which may be embodied as an output device such as a monitor, printer, or transmitter, for example.

The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

Deployment types include loading directly in the client, server and proxy computers via loading a storage medium such as a CD, DVD, etc. The process software may also be automatically or semi-automatically deployed into a computer system by sending the process software to a central server or a group of central servers. The process software is then downloaded into the client computers that will execute the process software. The process software is sent directly to the client system via e-mail. The process software is then either detached to a directory or loaded into a directory by a button on the e-mail that executes a program that detaches the process software into a directory. The process software is sent directly to a directory on the client computer hard drive. When there are proxy servers, the process will, select the proxy server code, determine on which computers to place the proxy servers' code, transmit the proxy server code, then install the proxy server code on the proxy computer. The process software will be transmitted to the proxy server then stored on the proxy server.

While it is understood that the process software may be deployed by manually loading directly in the client, server and proxy computers via loading a storage medium such as a CD, DVD, etc., the process software may also be automatically or semi-automatically deployed into a computer system by sending the process software to a central server or a group of central servers. The process software is then downloaded into the client computers that will execute the process software. Alternatively the process software is sent directly to the client system via e-mail. The process software is then either detached to a directory or loaded into a directory by a button on the e-mail that executes a program that detaches the process software into a directory. Another alternative is to send the process software directly to a directory on the client computer hard drive. When there are proxy servers, the process will, select the proxy server code, determine on which computers to place the proxy servers' code, transmit the proxy server code, then install the proxy server code on the proxy computer. The process software will be transmitted to the proxy server then stored on the proxy server.

FIG. 7 refers to methods for deployment drawings. In Step 100 begins the deployment of the process software. The first thing is to determine if there are any programs that will reside on a server or servers when the process software is executed 101. If this is the case then the servers that will contain the executables are identified 209. The process software for the server or servers is transferred directly to the servers' storage via FTP or some other protocol or by copying though the use of a shared file system 210. The process software is then installed on the servers 211. Next, a determination is made on whether the process software is be deployed by having users access the process software on a server or servers 102. If the users are to access the process software on servers then the server addresses that will store the process software are identified 103.

A determination is made if a proxy server is to be built 200 to store the process software. A proxy server is a server that sits between a client application, such as a Web browser, and a real server. It intercepts all requests to the real server to see if it can fulfill the requests itself. If not, it forwards the request to the real server. The two primary benefits of a proxy server are to improve performance and to filter requests. If a proxy server is required then the proxy server is installed 201. The process software is sent to the servers either via a protocol such as FTP or it is copied directly from the source files to the server files via file sharing 202. Another embodiment would be to send a transaction to the servers that contained the process software and have the server process the transaction, then receive and copy the process software to the server's file system. Once the process software is stored at the servers, the users via their client computers, then access the process software on the servers and copy to their client computers file systems 203. Another embodiment is to have the servers automatically copy the process software to each client and then run the installation program for the process software at each client computer. The user executes the program that installs the process software on his client computer 212 then exits the process 108.

In step 104, a determination is made whether the process software is to be deployed by sending the process software to users via e-mail. The set of users where the process software will be deployed are identified together with the addresses of the user client computers 105. The process software is sent via e-mail 204 to each of the users' client computers. The users then receive the e-mail 205 and then detach the process software from the e-mail to a directory on their client computers 206. The user executes the program that installs the process software on his client computer 212 then exits the process 108.

Lastly a determination is made on whether to the process software will be sent directly to user directories on their client computers 106. If so, the user directories are identified 107. The process software is transferred directly to the user's client computer directory 207. This can be done in several ways such as but not limited to sharing of the file system directories and then copying from the sender's file system to the recipient user's file system or alternatively using a transfer protocol such as File Transfer Protocol (FTP). The users access the directories on their client file systems in preparation for installing the process software 208. The user executes the program that installs the process software on his client computer 212 then exits the process 108.

The process software can be integrated into a client, server and network environment by providing for the process software to coexist with applications, operating systems and network operating systems software and then installing the process software on the clients and servers in the environment where the process software will function.

The first step is to identify any software on the clients and servers including the network operating system where the process software will be deployed that are required by the process software or that work in conjunction with the process software. This includes the network operating system that is software that enhances a basic operating system by adding networking features.

Next, the software applications and version numbers will be identified and compared to the list of software applications and version numbers that have been tested to work with the process software. Those software applications that are missing or that do not match the correct version will be upgraded with the correct version numbers. Program instructions that pass parameters from the process software to the software applications will be checked to ensure the parameter lists matches the parameter lists required by the process software. Conversely parameters passed by the software applications to the process software will be checked to ensure the parameters match the parameters required by the process software. The client and server operating systems including the network operating systems will be identified and compared to the list of operating systems, version numbers and network software that have been tested to work with the process software. Those operating systems, version numbers and network software that do not match the list of tested operating systems and version numbers will be upgraded on the clients and servers to the required level.

After ensuring that the software, where the process software is to be deployed, is at the correct version level that has been tested to work with the process software, the integration is completed by installing the process software on the clients and servers.

FIG. 8 refers to methods for integration. Step 220 begins the integration of the process software. The first thing is to determine if there are any process software programs that will execute on a server or servers 221. If this is not the case, then integration proceeds to 227. If this is the case, then the server addresses are identified 222. The servers are checked to see if they contain software that includes the operating system (OS), applications, and network operating systems (NOS), together with their version numbers, that have been tested with the process software 223. The servers are also checked to determine if there is any missing software that is required by the process software 223.

A determination is made if the version numbers match the version numbers of OS, applications and NOS that have been tested with the process software 224. If all of the versions match and there is no missing required software the integration continues in 227.

If one or more of the version numbers do not match, then the unmatched versions are updated on the server or servers with the correct versions 225. Additionally if there is missing required software, then it is updated on the server or servers 225. The server integration is completed by installing the process software 226.

Step 227 which follows either 221, 224 or 226 determines if there are any programs of the process software that will execute on the clients. If no process software programs execute on the clients the integration proceeds to 230 and exits. If this not the case, then the client addresses are identified 228.

The clients are checked to see if they contain software that includes the operating system (OS), applications, and network operating systems (NOS), together with their version numbers, that have been tested with the process software 229. The clients are also checked to determine if there is any missing software that is required by the process software 229.

A determination is made as to whether the version numbers match the version numbers of OS, applications and NOS that have been tested with the process software 231. If all of the versions match and there is no missing required software, then the integration proceeds to 230 and exits.

If one or more of the version numbers do not match, then the unmatched versions are updated on the clients with the correct versions 232. In addition, if there is missing required software then it is updated on the clients 232. The client integration is completed by installing the process software on the clients 233. The integration proceeds to 230 and exits.

The process software can be stored on a shared file system accessible from one or more servers. The process software is executed via transactions that contain data and server processing requests that use CPU units on the accessed server. CPU units are units of time such as minutes, seconds, hours on the central processor of the server. Additionally the assessed server may make requests of other servers that require CPU units. CPU units are an example that represents but one measurement of use. Other measurements of use include but are not limited to network bandwidth, memory usage, storage usage, packet transfers, complete transactions etc. When multiple customers use the same process software application, their transactions are differentiated by the parameters included in the transactions that identify the unique customer and the type of service for that customer. All of the CPU units and other measurements of use that are used for the services for each customer are recorded. When the number of transactions to any one server reaches a number that begins to affect the performance of that server, other servers are accessed to increase the capacity and to share the workload. Likewise when other measurements of use such as network bandwidth, memory usage, storage usage, etc. approach a capacity so as to affect performance, additional network bandwidth, memory usage, storage etc. are added to share the workload. The measurements of use used for each service and customer are sent to a collecting server that sums the measurements of use for each customer for each service that was processed anywhere in the network of servers that provide the shared execution of the process software. The summed measurements of use units are periodically multiplied by unit costs and the resulting total process software application service costs are alternatively sent to the customer and or indicated on a web site accessed by the customer which then remits payment to the service provider. In another embodiment, the service provider requests payment directly from a customer account at a banking or financial institution. In another embodiment, if the service provider is also a customer of the customer that uses the process software application, the payment owed to the service provider is reconciled to the payment owed by the service provider to minimize the transfer of payments.

The process software is shared, simultaneously serving multiple customers in a flexible, automated fashion. It is standardized, requiring little customization and it is scalable, providing capacity on demand in a pay-as-you-go model.

The process software can be stored on a shared file system accessible from one or more servers. The process software is executed via transactions that contain data and server processing requests that use CPU units on the accessed server. CPU units are units of time such as minutes, seconds, hours on the central processor of the server. Additionally the assessed server may make requests of other servers that require CPU units. CPU units are an example that represents but one measurement of use. Other measurements of use include but are not limited to network bandwidth, memory usage, storage usage, packet transfers, complete transactions etc.

When multiple customers use the same process software application, their transactions are differentiated by the parameters included in the transactions that identify the unique customer and the type of service for that customer. All of the CPU units and other measurements of use that are used for the services for each customer are recorded. When the number of transactions to any one server reaches a number that begins to affect the performance of that server, other servers are accessed to increase the capacity and to share the workload. Likewise when other measurements of use such as network bandwidth, memory usage, storage usage, etc. approach a capacity so as to affect performance, additional network bandwidth, memory usage, storage etc. are added to share the workload.

The measurements of use used for each service and customer are sent to a collecting server that sums the measurements of use for each customer for each service that was processed anywhere in the network of servers that provide the shared execution of the process software. The summed measurements of use units are periodically multiplied by unit costs and the resulting total process software application service costs are alternatively sent to the customer and or indicated on a web site accessed by the customer which then remits payment to the service provider.

In another embodiment, the service provider requests payment directly from a customer account at a banking or financial institution.

In another embodiment, if the service provider is also a customer of the customer that uses the process software application, the payment owed to the service provider is reconciled to the payment owed by the service provider to minimize the transfer of payments.

FIG. 9 refers to methods for On Demand. Step 240 begins the On Demand process. A transaction is created than contains the unique customer identification, the requested service type and any service parameters that further specify the type of service 241. The transaction is then sent to the main server 242. In an On Demand environment, the main server can initially be the only server, then, as capacity is consumed, other servers are added to the On Demand environment.

The server central processing unit (CPU) capacities in the On Demand environment are queried 243. The CPU requirement of the transaction is estimated, then the servers available CPU capacity in the On Demand environment are compared to the transaction CPU requirement to see if there is sufficient CPU available capacity in any server to process the transaction 244. If there is not sufficient server CPU available capacity, then additional server CPU capacity is allocated to process the transaction 248. If there was already sufficient Available CPU capacity then the transaction is sent to a selected server 245.

Before executing the transaction, a check is made of the remaining On Demand environment to determine if the environment has sufficient available capacity for processing the transaction. This environment capacity consists of such things as but not limited to network bandwidth, processor memory, storage etc. 246. If there is not sufficient available capacity, then capacity will be added to the On Demand environment 247. Next, the required software to process the transaction is accessed, loaded into memory, then the transaction is executed 249.

The usage measurements are recorded 250. The usage measurements consist of the portions of those functions in the On Demand environment that is used to process the transaction. The usage of such functions as, but not limited to, network bandwidth, processor memory, storage and CPU cycles are what is recorded. The usage measurements are summed, multiplied by unit costs and then recorded as a charge to the requesting customer 251. If the customer has requested that the On Demand costs be posted to a web site 252 then they are posted 253.

If the customer has requested that the On Demand costs be sent via e-mail to a customer address 254, then they are sent 255. If the customer has requested that the On Demand costs be paid directly from a customer account 256, then payment is received directly from the customer account 257. The last step is to exit the On Demand process.

The process software may be deployed, accessed and executed through the use of a virtual private network (VPN), which is any combination of technologies that can be used to secure a connection through an otherwise unsecured or untrusted network. The use of VPNs is to improve security and for reduced operational costs. The VPN makes use of a public network, usually the Internet, to connect remote sites or users together. Instead of using a dedicated, real-world connection such as leased line, the VPN uses “virtual” connections routed through the Internet from the company's private network to the remote site or employee.

The process software may be deployed, accessed and executed through either a remote-access or a site-to-site VPN. When using the remote-access VPNs the process software is deployed, accessed and executed via the secure, encrypted connections between a company's private network and remote users through a third-party service provider. The enterprise service provider (ESP) sets a network access server (NAS) and provides the remote users with desktop client software for their computers. The telecommuters can then dial a toll-free number or attach directly via a cable or DSL modem to reach the NAS and use their VPN client software to access the corporate network and to access, download and execute the process software.

When using the site-to-site VPN, the process software is deployed, accessed and executed through the use of dedicated equipment and large-scale encryption that are used to connect a companies multiple fixed sites over a public network such as the Internet.

The process software is transported over the VPN via tunneling which is the process of placing an entire packet within another packet and sending it over a network. The protocol of the outer packet is understood by the network and both points, called tunnel interfaces, where the packet enters and exits the network.

FIG. 10 refers to systems and methods for VPN service. Step 260 begins the Virtual Private Network (VPN) process. A determination is made to see if a VPN for remote access is required 261. If it is not required, then proceed to 262. If it is required, then determine if the remote access VPN exists 264.

If it does exist, then proceed to 265. Otherwise, identify the third party provider that will provide the secure, encrypted connections between the company's private network and the company's remote users 276. The company's remote users are identified 277. The third party provider then sets up a network access server (NAS) 278 that allows the remote users to dial a toll free number or attach directly via a cable or DSL modem to access, download and install the desktop client software for the remote-access VPN 279.

After the remote access VPN has been built or if it been previously installed, the remote users can then access the process software by dialing into the NAS or attaching directly via a cable or DSL modem into the NAS 265. This allows entry into the corporate network where the process software is accessed 266. The process software is transported to the remote user's desktop over the network via tunneling. That is the process software is divided into packets and each packet including the data and protocol is placed within another packet 267. When the process software arrives at the remote user's desktop, it is removed from the packets, reconstituted and then is executed on the remote users desktop 268.

A determination is made to see if a VPN for site to site access is required 262. If it is not required, then proceed to exit the process 263. Otherwise, determine if the site to site VPN exists 269. If it does exist, then proceed to 272. Otherwise, install the dedicated equipment required to establish a site to site VPN 270. Then build the large scale encryption into the VPN 271.

After the site to site VPN has been built or if it had been previously established, the users access the process software via the VPN 272. The process software is transported to the site users over the network via tunneling. The process software is divided into packets and each packet including the data and protocol is placed within another packet 274. When the process software arrives at the remote user's desktop, it is removed from the packets, reconstituted and is executed on the site users desktop 275. The process proceeds to exit the process 263.

The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 

1. A method comprising: receiving an initial circuit design into a computerized device, said circuit design including at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between said source and said sink; evaluating timing performance parameter sensitivities to manufacturing variations of each of said elements to identify how much each element will increase or decrease said timing performance parameter of said path for each change in each manufacturing variable associated with manufacturing said elements, using said computerized device; and altering said elements within said path until elements that produce positive changes to said timing performance parameter for a given manufacturing variable change approximately equals, in magnitude, elements that produce negative changes to said timing performance parameter for said given manufacturing variable change, to produce an altered circuit design using said computerized device.
 2. The method according to claim 1, further comprising manufacturing said altered circuit design using tools operatively connected to said computerized device.
 3. The method according to claim 1, said timing performance comprising a measure of slack in said path.
 4. The method according to claim 1, said altered circuit design providing the same function as said initial circuit design.
 5. The method according to claim 1, said sensitivities to manufacturing variations comprising geometric positions of said elements relative to said source and said sink, said altering of said elements comprising altering positions of said elements relative to said source and said sink
 6. The method according to claim 1, said altering of said elements comprising substituting different elements for elements in said path.
 7. A method comprising: receiving an initial circuit design into a computerized device, said circuit design including at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between said source and said sink; evaluating resistance and capacitance sensitivities to manufacturing variations of each of said elements to identify how much each element will increase or decrease resistance and capacitance of said path for each change in each manufacturing variable associated with manufacturing said elements, using said computerized device; and altering said elements within said path until elements that produce positive changes to said resistance and capacitance for a given manufacturing variable change approximately equals, in magnitude, elements that produce negative changes to said resistance and capacitance for said given manufacturing variable change, to produce an altered circuit design using said computerized device.
 8. The method according to claim 7, further comprising manufacturing said altered circuit design using tools operatively connected to said computerized device.
 9. The method according to claim 7, said manufacturing variations comprising differences that occur between different production runs and differences that occur within the same production run, using the same circuit design and the same manufacturing processes.
 10. The method according to claim 7, said altered circuit design providing the same function as said initial circuit design.
 11. The method according to claim 7, said sensitivities to manufacturing variations comprising geometric positions of said elements relative to said source and said sink, said altering of said elements comprising altering positions of said elements relative to said source and said sink.
 12. The method according to claim 7, said altering of said elements comprising substituting different elements for elements in said path.
 13. A method comprising: receiving an initial circuit design into a computerized device, said circuit design including at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between said source and said sink; evaluating temperature based timing sensitivities to manufacturing variations of each of said elements to identify how much each element will increase or decrease temperature based timing characteristics of said path for each change in each manufacturing variable associated with manufacturing said elements, using said computerized device; and altering said elements within said path until elements that produce positive changes to said temperature based timing characteristics for a given manufacturing variable change approximately equals, in magnitude, elements that produce negative changes to said temperature based timing characteristics for said given manufacturing variable change, to produce an altered circuit design using said computerized device.
 14. The method according to claim 13, further comprising manufacturing said altered circuit design using tools operatively connected to said computerized device.
 15. The method according to claim 13, said manufacturing variations comprising differences that occur between different production runs and differences that occur within the same production run, using the same circuit design and the same manufacturing processes.
 16. The method according to claim 13, said altered circuit design providing the same function as said initial circuit design.
 17. The method according to claim 13, said sensitivities to manufacturing variations comprising geometric positions of said elements relative to said source and said sink, said altering of said elements comprising altering positions of said elements relative to said source and said sink.
 18. The method according to claim 13, said altering of said elements comprising substituting different elements for elements in said path.
 19. A computer program product comprising a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code being configured to perform a method comprising: receiving an initial circuit design, said circuit design including at least one path having at least one beginning point comprising a source, at least one ending point comprising a sink, and one or more circuit elements between said source and said sink; evaluating timing performance parameter sensitivities to manufacturing variations of each of said elements to identify how much each element will increase or decrease said timing performance parameter of said path for each change in each manufacturing variable associated with manufacturing said elements; and altering said elements within said path until elements that produce positive changes to said timing performance parameter for a given manufacturing variable change approximately equals, in magnitude, elements that produce negative changes to said timing performance parameter for said given manufacturing variable change, to produce an altered circuit design.
 20. The computer program product according to claim 19, further comprising manufacturing said altered circuit design using tools operatively connected to said computerized device.
 21. The computer program product according to claim 19, said manufacturing variations comprising differences that occur between different production runs and differences that occur within the same production run, using the same circuit design and the same manufacturing processes.
 22. The computer program product according to claim 19, said altered circuit design providing the same function as said initial circuit design.
 23. The computer program product according to claim 19, said sensitivities to manufacturing variations comprising geometric positions of said elements relative to said source and said sink, said altering of said elements comprising altering positions of said elements relative to said source and said sink.
 24. The computer program product according to claim 19, said altering of said elements comprising substituting different elements for elements in said path. 